from PyQt5.Qt import *
import time

"""
PyQt为事件处理提供了两种机制, 高级的信号和槽机制, 低级的事件处理程序
事件处理程序: processEvents函数, 它的作用就是处理事件, 简单的说就是刷新页面

执行耗时操作, 界面会变得卡顿, 如果在执行这个耗时程序时不断运行QApplication.processEvents()
那么就会实现一边执行耗时程序, 一边刷新页面的功能, 给人的感觉就是程序运行很流畅

失败：
测试UI不显示

"""
class MyQWidget(QWidget):
    def __init__(self):
        super().__init__()
        self.setup_ui()

    def setup_ui(self):
        self.setWindowTitle("事件处理")
        layout = QGridLayout(self)
        self.btn = QPushButton("开始")
        layout.addWidget(self.btn)
        self.btn.clicked.connect(self.slotAdd())
        self.setLayout(layout)

    def slotAdd(self):
        for n in range(10):
            print(n)
            QApplication.processEvents()
            time.sleep(1)

# 测试
if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    window = MyQWidget()
    window.show()
    sys.exit(app.exec_())